/**
 * 路由更新工具
 * 用于在登录后动态更新路由和侧边栏
 */

/**
 * 强制更新路由和侧边栏
 * 在登录成功后调用此函数来刷新路由和侧边栏
 */
export async function forceUpdateRoutes() {
  try {
    // 重新加载当前页面以刷新路由
    window.location.reload()
  } catch (error) {
    console.error('强制更新路由失败:', error)
    // 如果刷新失败，尝试使用Vue Router的replace方法
    try {
      const currentPath = window.location.pathname
      window.location.replace(currentPath)
    } catch (fallbackError) {
      console.error('备用路由更新方法也失败:', fallbackError)
    }
  }
}

/**
 * 平滑更新侧边栏
 * 通过触发Vue的响应式更新来刷新侧边栏
 */
export function smoothUpdateSidebar() {
  // 触发Vue的响应式更新
  if (window.__VUE_DEVTOOLS_GLOBAL_HOOK__) {
    // 在开发环境下，可以通过devtools触发更新
    window.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit('vuex:init')
  }

  // 触发全局事件，通知侧边栏需要更新
  const event = new CustomEvent('sidebar-update')
  window.dispatchEvent(event)
}

/**
 * 检查路由是否已加载
 * 用于验证动态路由是否已正确加载
 */
export function checkRoutesLoaded() {
  const router = window.$router || (window.__VUE_DEVTOOLS_GLOBAL_HOOK__ && window.__VUE_DEVTOOLS_GLOBAL_HOOK__.Vue && window.__VUE_DEVTOOLS_GLOBAL_HOOK__.Vue.$router)

  if (router && router.options && router.options.routes) {
    const routes = router.options.routes
    // 检查是否有动态路由（除了基础路由之外的路由）
    const dynamicRoutes = routes.filter(route =>
      route.path !== '/login' &&
      route.path !== '/404' &&
      route.path !== '/403' &&
      route.path !== '*'
    )

    console.log('当前路由数量:', routes.length)
    console.log('动态路由数量:', dynamicRoutes.length)
    console.log('路由详情:', routes)

    return dynamicRoutes.length > 1 // 除了dashboard之外还有其他路由
  }

  return false
}
